package com.hong.qrpc.utils;

/**
 * @Author HQT
 * @Date 2022/8/9 11:30
 */
public class ByteUtils {
    public static int getInt(byte[] bytes) {
        return (int) bytesToLong(bytes);
    }

    public static short getShort(byte[] bytes) {
        return (short) bytesToLong(bytes);
    }

    public static long getLong(byte[] bytes) {
        return bytesToLong(bytes);
    }

    public static byte[] numToBytes(int byteLen, long val) {
        byte[] res = new byte[byteLen];
        for (int i = res.length - 1, idx = 0; i >= 0; i--) {
            for (int j = 0; j < 8; j++, idx++) {
                if ((val & (1L << idx)) != 0) {
                    res[i] |= (1L << j);
                }
            }
        }
        return res;
    }

    private static long bytesToLong(byte[] bytes) {
        long res = 0;
        int idx = 0;
        for (int i = bytes.length - 1; i >= 0; i--) {
            for (int j = 0; j < 8; j++, idx++) {
                if ((bytes[i] & (1L << j)) != 0) {
                    res |= (1L << idx);
                }
            }
        }
        return res;
    }
}
